package com.ror.java.se.reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Parameter;

public class Demo02 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        Class<Student> stuClass = Student.class;
        System.out.println("====getConstructors===============================================================");
        for (Constructor<?> constructor : stuClass.getConstructors()) {
            System.out.println(constructor);
        }
        System.out.println("====getDeclaredConstructors=======================================================");
        for (Constructor<?> declaredConstructor : stuClass.getDeclaredConstructors()) {
            System.out.println(declaredConstructor);
        }
        System.out.println("====getConstructor================================================================");
        System.out.println(stuClass.getConstructor());
        System.out.println("====getDeclaredConstructor========================================================");
        Constructor<Student> stringIntCtor = stuClass.getDeclaredConstructor(String.class, int.class);
        System.out.println(stringIntCtor);
        System.out.println("====getModifiers==================================================================");
        int modifiers = stringIntCtor.getModifiers();
        System.out.println(modifiers);
        System.out.println("====getParameters=================================================================");
        for (Parameter parameter : stringIntCtor.getParameters()) {
            System.out.println(parameter);
        }
        System.out.println("====newInstance===================================================================");
        stringIntCtor.setAccessible(true); //临时取消访问权限检查（暴力反射）
        Student stu1 = stringIntCtor.newInstance("张三", 21);
        System.out.println(stu1);
        System.out.println("==================================================================================");
    }
}
